#include int main() { /* ciclo infinito */ unsigned int valore; unsigned int mask; int shift; int i; int scelta; while(1) { /* visualizza valore attuale in bin, hex, dec, oct */ printf("Valore: "); for(i=15; i>=0; i--) { printf("%d", (valore >> i)&1); } printf("\nHex=%x Dec=%u Oct=%o\n",valore, valore, valore); /* offrire scelta operazione */ printf("1=And 2=Or 3=Xor 4=Not 5=ShiftSx 6=ShiftDx\n"); /* leggere scelta utente */ scanf("%d", &scelta); /* se And, chiedere valore maschera + eseguire And con maschera */ if(scelta==1) { printf("AND con quale maschera? "); scanf("%x",&mask); valore = valore & mask; } /* altrimenti se Or, input mask + exec Or */ else if (scelta == 2) { printf("OR con quale maschera? "); scanf("%x",&mask); valore=valore | mask; } /* altrimenti se Xor, input mask + exec Xor */ else if (scelta == 3) { printf("XOR con quale maschera? "); scanf("%x",&mask); valore=valore ^ mask; } /* altrimenti se Not, exec Not */ else if (scelta == 4) { valore = ~ valore ; } /* altrimenti se Shift Sx, input delta + exec shift_sx */ else if(scelta == 5) { printf("Shift a sinistra di..? "); scanf("%d", &shift); valore = valore << shift; } /* altrimenti se Shift Dx, input delta + exec shift_dx */ else if(scelta == 6) { printf("Shift a destra di..? "); scanf("%d", &shift); valore = valore >> shift; } /* altrimenti: messaggio d'errore + fine programma */ else { printf("Immissione errata.\n"); return; } } }